// 版权归Go作者所有。版权所有。
// 此源代码的使用受BSD样式
// 许可证的约束，该许可证可以在许可证文件中找到。

package poll

import "syscall"

// Fsync使用SYS\u FULLFSYNC调用SYS\u FCNTL，因为在OS X上，SYS\u Fsync没有将内容完全刷新到磁盘。
// 请参阅第26650期以及OS X上的fsync手册页。
func (fd *FD) Fsync() error {
	if err := fd.incref(); err != nil {
		return err
	}
	defer fd.decref()
	return ignoringEINTR(func() error {
		_, err := fcntl(fd.Sysfd, syscall.F_FULLFSYNC, 0)
		return err
	})
}
